package juego.personaje.mario;

import javax.swing.ImageIcon;

import juego.graficos.ElementoGrafico;
import juego.main.SoundPlayer;
import juego.malos.Enemigo;
import juego.objetos.Objeto;
import juego.objetos.PiedraIrrompiblePowerUp;
import juego.powerUps.PowerUp;

/**
 * Clase que modela la caracteristica Super de Mario Bros, esto es
 * un Super Mario Bros.
 * @author Latini Macarena
 * @author Rosas Tifany
 */
public class CaracteristicaSuper extends Caracteristica {

	/**
	 * Constructor.
	 * @param m Mario Bros
	 */
	public CaracteristicaSuper(Mario m) {
		super(m);
		altura=64;
		crearGraficos();
		// TODO Auto-generated constructor stub	
	}
	
	/**
	 * Crea los graficos correspondientes a la caracteristica que se
	 * esta modelando.
	 */
	public void crearGraficos()
	{
		derecha=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/caminandoder.gif")));
		derecha.setBounds(0,0, 32, 64);

		izquierda= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/caminandoizq.gif")));
		izquierda.setBounds(0,0, 32, 64);

		nada= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/marioquieto.gif")));
		nada.setBounds(0,0, 32, 64);
		
		saltarder= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/mariosaltandoder.gif")));
		saltarder.setBounds(0,0, 32, 64);
		
		saltarizq= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/mariosaltandoizq.gif")));
		saltarizq.setBounds(0,0, 32, 64);
		
		agachado=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/agachado.gif")));
		agachado.setBounds(0,0, 32, 64);
		
		controlarSalto=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/marioquieto.gif")));
		controlarSalto.setBounds(0,0, 32, 64);

	}

	/**
	 * Carga los graficos correspondientes.
	 */
	public void cargarGraficos() {
		// TODO Auto-generated method stub
		ElementoGrafico e=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/caminandoder.gif")));
		e.setBounds(0,0, 32, 64);
		derecha.setIcon(e.getIcon());
		
		e=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/caminandoizq.gif")));
		e.setBounds(0,0, 32, 64);
		izquierda.setIcon(e.getIcon());

		e=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/marioquieto.gif")));
		e.setBounds(0,0, 32, 64);
		nada.setIcon(e.getIcon());
		
		e= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/mariosaltandoder.gif")));
		e.setBounds(0,0, 32, 64);
		saltarder.setIcon(e.getIcon());
		
		e= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/mariosaltandoizq.gif")));
		e.setBounds(0,0, 32, 64);
		saltarizq.setIcon(e.getIcon());
		
		e=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/agachado.gif")));
		e.setBounds(0,0, 32, 64);
		agachado.setIcon(e.getIcon());
	}

	@Override
	/**
	 * Setea la imagen inicial de Mario Bros.
	 */
	public  void setGrafica(){
		// TODO Auto-generated method stub
		ElementoGrafico eg= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/mario/marioquieto.gif")));
		eg.setBounds(0,0, 32, 64);
		mario.setGrafico(eg);
		int x=mario.getGrafico().getLocation().x;
		int y=mario.getGrafico().getLocation().y;
		mario.getGrafico().setBounds(x, y, 32, 64);
		mario.getGrafico().setLocation(x, y-32);
		controlarSalto=eg;	
	}
	
	@Override
	public void convertirA() {
		// TODO Auto-generated method stub
		mario.setCaracteristica(new CaracteristicaMini(mario));
		Caracteristica c=mario.obtenerCaracteristica();

		ElementoGrafico nuevo=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/minimario/mario.gif")));
		
		nuevo.setBounds(0,0, 32, 32);
		mario.setGrafico(nuevo);
		int x=mario.getGrafico().getLocation().x;
		int y=mario.getGrafico().getLocation().y;
		mario.getGrafico().setBounds(x, y, 32, 32);
		mario.getGrafico().setLocation(x, y);
		controlarSalto=nuevo;	

	}

	public void convertirAInvencible()
	{
		mario.setCaracteristica(new CaracteristicaInmunizable(mario));
		Caracteristica c=mario.obtenerCaracteristica();
		c.setGrafica();
		mario.setCaracteristica(c);
	}
	
	@Override
	public void colisionConMalo(Enemigo e) {
		// TODO Auto-generated method stub
		convertirA();
	}

	@Override
	public void colisionConEstrella() {
		// TODO Auto-generated method stub
		convertirAInvencible();
	}

	@Override
	public void colisionConFlorDeFuego() {
		// TODO Auto-generated method stub
		convertirAMarioConTiros();
	}

	/**
	 * Convierte a Mario Bros a Mario con Tiros.
	 */
	public void convertirAMarioConTiros() {
		// TODO Auto-generated method stub
		SoundPlayer s=new SoundPlayer("/juego/musica/coin.mp3");

		mario.setCaracteristica(new CaracteristicaTiros(mario));
		Caracteristica c=mario.obtenerCaracteristica();
		c.setGrafica();
		mario.setCaracteristica(c);
		s.play();
	}




}
